package com.yeyks.commonReference.append.activity;

import com.yeyks.activity.dal.domain.ActivityDrawRecordNew;
import com.yeyks.activity.dal.domain.ActivityList;
import com.yeyks.common.param.PageParam;
import com.yeyks.common.param.consumer.UserIdParam;
import com.yeyks.common.result.activity.*;
import com.yeyks.commonReference.pojo.param.activity.DoubleDan.*;
import com.yeyks.commonReference.pojo.vo.activity.DoubleDan.*;

import java.util.List;

public interface ActivityDoubleDanService {

    //获取活动信息
    ActivityList getActivityDetail();

    /*
        统计活动
        key:
        抽奖次数  Raffle times  RT
        节点红包领取人数  Number of node red envelope recipients  NONRER
         */
    boolean statisticIncrement(ActivityDoubleDanStatisticIncrementParam param);

    //活动转发人数记录
    void statisticIncrementActivityForwardNumberRecord(ActivityDoubleDanStatisticIncrementActivityForwardNumberRecordParam param);

    //轮播
    List<ActivityDoubleDanGetCarouselVo> getCarousel(PageParam param);

    //获取宝箱状况
    ActivityDoubleDanTreasureChestStatusVo getTreasureChestStatus(ActivityDoubleDanTreasureChestStatusParam param);

    //抽宝箱
    ActivityDoubleDanlotteryTreasureChestVo lotteryTreasureChest(ActivityDoubleDanlotteryTreasureChestParam param);

    //获取奖品列表
    ActivityDoubleDanGetPrizeListVo getPrizeList();

    //获取抽奖次数
    ActivityDoubleDanGetPrizeCountVo getPrizeCount(UserIdParam param);

    //抽奖
    ActivityDoubleDanLotteryVo lottery(ActivityDoubleDanLotteryParam param);

    //增加抽奖次数
    boolean inrLotteryCount(Integer userId, Integer type);

    //获取奖品明细
    List<ActivityDrawRecordNew> getAwardDetails(Integer userId);

    /**
     * 活动总统计
     *
     * @return
     */
    ActivityStatTotalResult statTotal();

    /**
     * 各节点红包领取统计
     *
     * @return
     */
    List<ActivityStatRedResult> redTotal();

    /**
     * 活动点击量统计
     *
     * @return
     */
    List<ActivityStatClickResult> clickTotal();

    /**
     * 活动转发人数统计
     *
     * @return
     */
    List<ActivityStatForwardUserResult> forwardUserTotal();

    /**
     * 活动转发次数统计
     *
     * @return
     */
    List<ActivityStatForwardTimeResult> forwardTimeTotal();
}
